package pos.dominios;




import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;



import pos.dato.IPropuestaDAO;
import pos.dato.JDBCComentarioDAO;
import pos.dato.JDBCPerfilDAO;
import pos.dato.JDBCPropuestaDAO;
import pos.dato.JDBCUsuarioDAO;

public class PropuestasManager {

    private static PropuestasManager ps;

    private List<Propuesta> propuestas;
    
   

    public static synchronized PropuestasManager getInstance() {
        if (ps == null)
            ps = new PropuestasManager();
        return ps;}
    
   

        private PropuestasManager() {
            propuestas = (new JDBCPropuestaDAO().selectAllPropuestas());
                  }
    public List<Propuesta> getPropuestas() {
      return propuestas;
    }

    

   

    public Propuesta getPropuesta(String propuestaID) {
        Propuesta result = null;
        for (Propuesta p : propuestas){
            
            if (p.getPropuestaID().compareTo(propuestaID) == 0) {
                result = p;
            }
        }
        return result;
    }
    
    public List<Propuesta> getPropuestasAutor(String usuarioID) {
    	List<Propuesta> result = new JDBCPropuestaDAO().selectAllPropuestasAutor(usuarioID);
    	
        return result;
    }

	public boolean esUsuarioActivo(String usuarioID){
    	Boolean res= true;
    	List<Propuesta> l = getPropuestasAutor(usuarioID);
    	Date d1 =l.get(l.size()-2).getFecha();
    	Date reciente =l.get(l.size()-1).getFecha();
    	
    	Long tiempo =(reciente.getTime()-d1.getTime())/86400000;
    	
    	if(tiempo>30){res=false;}
    	
    	return res;
    	
    }
    
    public List<Propuesta> getPropuestasEtiquetas(String etiquetaID) {
    	List<Propuesta> result = new JDBCPropuestaDAO().selectAllPropuestasEtiqueta(etiquetaID);
//        List<Propuesta> result = new LinkedList<Propuesta>();
//        for (Propuesta p : propuestas) {
//            
//            if (p.getEtiqueta().getEtiquetaID().equals(etiquetaID)) 
//                result.add(p);
//            
//        }
        return result;
    }
    
    public List<Propuesta> getPropuestasNoModeradas() {
        List<Propuesta> result = new LinkedList<Propuesta>();
        for (Iterator<Propuesta> iter = propuestas.iterator(); iter.hasNext();) {
            Propuesta p = iter.next();
            if (p.getModerada()== false) {
                result.add(p);
            }
        }
        return result;
    }
   public void votarSegunKarma (Propuesta pr,Perfil p,Integer a){
	   if (p.getKarma()>7){
		  new JDBCPropuestaDAO().updateVoto(pr.getPropuestaID(),pr.getVoto()+(a*2));
		  
	   }
	   else{
		   new JDBCPropuestaDAO().updateVoto(pr.getPropuestaID(),pr.getVoto()+a);
	   		   
	   }
	   Propuesta res = new JDBCPropuestaDAO().selectPropuesta(pr.getPropuestaID());
	   System.out.println("La Propuesta de la modificacion voto es: "+res.getVoto());
	   if(res.getVoto()>50){
		   new JDBCPropuestaDAO().updateModerada(pr.getPropuestaID());
		   }  
	  
  }

  }